/*
	lib为默认函数库名称空间，常规方法以静态方式保存在lib名称空间上。
*/
var lib = function(o){
	/*
		lib函数接参一个参数，参数类型为一个对象或者函数。
		根据对象或者函数，将静态的方法添加到lib名称空间上面。
		bool function(object||function)
	*/
	if(typeof o == 'function'){
		o.call(lib);
		return true
	}else
	
	if(typeof o == 'object')
	{
		var opt;
		for(opt in o){
			lib[opt] = o[opt];
		}
		return !!opt
	}
	return false;

}
/*
	基础功能扩展
*/
lib({
	/*
		缓存对象
	*/
	cache:{}
	/*
		short函数接受两个参数，用来给名称较长的方法取一个短名称。返回布尔值。
		bool function(string longName,string shortName)
	*/
	shortName:function(longName,shortName){
		if(!shortName && (this[shortName] = this[longName])) return true;
		return false;
	}
	/*
		接受一个参数，用来检测指定参数是否为指定类型
	*/
	isNum:function(o){
		return o ? (o.constructor == Number) : false;
	},
	isStr:function(o){
		return o ? (o.constructor == String) : false;
	},
	isBool:function(o){
		return o ? (o.constructor == Boolean) : false;
	},
	isArr:function(o){
		return o ? (o.constructor == Array) : false;
	},
	isObj:function(o){
		return o ? (o.constructor == Object) : false;
	},
	isFun:function(o){
		return o ? (o.constructor == Function) : false;
	}//结束
})
/*
	用户添加功能扩展
*/
lib({
	/*
		browse用来确定浏览器类型
		当参数为空时，返回一个对象包含下列属性
			type	浏览器类型
			version	浏览器主版本号
			all		浏览器类型及主本号
			toString默认方法，值为type属性
		可包含一个字符串参数，检测浏览器是否为指定类型
		为chk中的任何意一个值。
	*/
	browse:function(o){
		if(this.cache['browse']){
			return this.isStr(o) ? this.cache['browse'].toString(o.toLowerCase()) : this.cache['browse'];
		}

		var type = /(MSIE)[^;]*|(Firefox)[^ ]*|(Chrome)[^ ]*|(Opera)[^ ]*|(Safari).*$/.exec(navigator.userAgent),
			version = /(\d).*$/,
			chk = {
				'ie':'MSIE','isie':'MSIE',
				'ff':'Firefox','isie':'Firefox',
				'opera':'Opera','isopera':'Opera',
				'chrome':'Chrome','ischrome':'Chrome',
				'safari':'Safari','issafari':'Safari'
			},
			ret = {};

			ret.type = type[1]||type[2]||type[3]||type[4]||type[5];
			ret.version = version.exec(type)[1];
			ret.all = type[0];
			ret.toString = function(o){
				return o ? chk[o] == this.type : this.type;
			}
			this.cache['browse'] = ret;

		return this.browse(o);

	},
	flash:function(){
	}
})